From Variability Tolerance to Approximate Computing in Parallel Integrated Architectures and Accelerators by Abbas Rahimi Luca Benini & Rajesh K. Gupta
Author:Abbas Rahimi, Luca Benini & Rajesh K. Gupta
Language: eng
Format: epub
Publisher: Springer International Publishing, Cham
7.3 Work-Unit Vulnerability and VOMP Work-Sharing
OpenMP [19] consists of a set of compiler directives and library routines to specify parallel execution within a sequential code. Enclosing a code block within a #pragma omp parallel directive has the effect of launching multiple instances of that code over the available processors. Differentiating the actual work done by different processors in OpenMP is achieved by means of work-sharing constructs: #pragma omp for, #pragma omp sections, and #pragma omp task. The for directive can only be associated to a loop nest, and distributes loop iterations over available processors. Within a sections directive multiple section blocks can be specified, each containing a different parallel work-unit. Sections have limited expressiveness for describing task parallelism. For this reason, the latest OpenMP specifications have included the new task directive, which supports sophisticated forms of task parallelism. However, task implies significant overheads, which makes sections more convenient to outline few coarse-grained tasks in a program. In addition, it is easy to describe software pipeline parallelism with sections, by just adding point-to-point synchronization to enforce dependencies within parallel tasks. The latter is the main use we make of sections in this chapter.
As discussed earlier in the introduction, to enable software-driven policies for variability-tolerant parallel workload scheduling we need to characterize parallel work-units, WU, in terms of vulnerability to timing errors.2 Each OpenMP work-sharing construct outlines an execution unit which runs a sequence of instructions. Enclosing portions of code within any of these constructs allows the programmer to statically identify several WU types in the program, as every directive syntactically delimits a unique stream of instructions. While at runtime the same stream may be dynamically instantiated several times (e.g., a work-sharing directive nested within a loop), from the point of view of our characterization it uniquely identifies a single WU type. As a direct consequence, there are as many types of WUs in a program as there are work-sharing directives in its code, as shown in Fig. 7.2.
Fig. 7.2Outlined WU types in a OpenMP program: task, sections, for
Download
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
The Mikado Method by Ola Ellnestam Daniel Brolund(22432)
Hello! Python by Anthony Briggs(21622)
Secrets of the JavaScript Ninja by John Resig Bear Bibeault(20183)
Dependency Injection in .NET by Mark Seemann(19563)
The Well-Grounded Java Developer by Benjamin J. Evans Martijn Verburg(19311)
Kotlin in Action by Dmitry Jemerov(19233)
OCA Java SE 8 Programmer I Certification Guide by Mala Gupta(18774)
Algorithms of the Intelligent Web by Haralambos Marmanis;Dmitry Babenko(17576)
Adobe Camera Raw For Digital Photographers Only by Rob Sheppard(16965)
Grails in Action by Glen Smith Peter Ledbrook(16726)
Sass and Compass in Action by Wynn Netherland Nathan Weizenbaum Chris Eppstein Brandon Mathis(14219)
Secrets of the JavaScript Ninja by John Resig & Bear Bibeault(12199)
Test-Driven iOS Development with Swift 4 by Dominik Hauser(10923)
A Developer's Guide to Building Resilient Cloud Applications with Azure by Hamida Rebai Trabelsi(10597)
Jquery UI in Action : Master the concepts Of Jquery UI: A Step By Step Approach by ANMOL GOYAL(10029)
Hit Refresh by Satya Nadella(9115)
The Kubernetes Operator Framework Book by Michael Dame(8537)
Exploring Deepfakes by Bryan Lyon and Matt Tora(8362)
Robo-Advisor with Python by Aki Ranin(8305)